﻿using System;
using System.IO.Ports;

namespace Communication.StreamResource.SerialPortImplementation;

/// <summary>
///     串口配置
/// </summary>
public record SerialPortConfiguration : IConfiguration
{
    private const ConfigurationType ContType = ConfigurationType.Com;

    /// <summary>
    ///     使用的端口(例如COM1)。
    /// </summary>
    public required string PortName { get; init; }

    /// <summary>
    ///     波特率。
    /// </summary>
    public int BaudRate { get; init; }

    /// <summary>
    ///     指定 SerialPort 对象的奇偶校验位。
    /// </summary>
    public Parity Parity { get; init; }

    /// <summary>
    ///     数据位值。
    /// </summary>
    public int DataBits { get; init; }

    /// <summary>
    ///     指定SerialPort对象上使用的停止位数。
    /// </summary>
    public StopBits StopBits { get; init; }

    public ConfigurationType Type => ContType;

    public string ToString(string? format, IFormatProvider? formatProvider)
    {
        return $"{Type}-{PortName}-{BaudRate}-{Parity}-{DataBits}-{StopBits}";
    }
}